home *** CD-ROM | disk | FTP | other *** search
/ C++ für Kids / C++ for kids.iso / SETUP / US / CBUILDER / DATA.Z / WS2SPI.H < prev    next >
C/C++ Source or Header  |  1997-02-13  |  19KB  |  964 lines

  1. /* WS2SPI.H -- definitions to be used with the WinSock service provider.
  2.  *
  3.  * This header file corresponds to version 2.2.x of the WinSock SPI
  4.  * specification.
  5.  *
  6.  * This file includes parts which are Copyright (c) 1982-1986 Regents
  7.  * of the University of California.  All rights reserved.  The
  8.  * Berkeley Software License Agreement specifies the terms and
  9.  * conditions for redistribution.
  10.  */
  11.  
  12. #ifndef _WINSOCK2SPI_
  13. #define _WINSOCK2SPI_
  14. #pragma option -b
  15.  
  16. /*
  17.  * Ensure structures are packed consistently.
  18.  */
  19.  
  20. #pragma option -b.
  21. #include <pshpack4.h>
  22. #pragma option -b
  23.  
  24. /*
  25.  * Pull in WINSOCK2.H if necessary
  26.  */
  27.  
  28. #ifndef _WINSOCK2API_
  29. #pragma option -b.
  30. #include <winsock2.h>
  31. #pragma option -b
  32. #endif /* _WINSOCK2API_ */
  33.  
  34. #define WSPDESCRIPTION_LEN 255
  35.  
  36. typedef struct WSPData {
  37.     WORD         wVersion;
  38.     WORD         wHighVersion;
  39.     WCHAR        szDescription[WSPDESCRIPTION_LEN+1];
  40. } WSPDATA, FAR * LPWSPDATA;
  41.  
  42. typedef struct _WSATHREADID {
  43.     HANDLE ThreadHandle;
  44.     DWORD Reserved;
  45. } WSATHREADID, FAR * LPWSATHREADID;
  46.  
  47. /*
  48.  * SPI function linkage.
  49.  */
  50.  
  51. #define WSPAPI WSAAPI
  52.  
  53.  
  54. #ifdef __cplusplus
  55. extern "C" {
  56. #endif
  57.  
  58. /*
  59.  * Pointer to a blocking callback. A pointer to a blocking callback is
  60.  * returned from the WPUQueryBlockingCallback() upcall. Note that this
  61.  * function's signature is not identical to an application's blocking
  62.  * hook function.
  63.  */
  64.  
  65. typedef
  66. BOOL
  67. (CALLBACK FAR * LPBLOCKINGCALLBACK)(
  68.     DWORD dwContext
  69.     );
  70.  
  71. /*
  72.  * Pointer to a user APC function. This is used as a parameter to the
  73.  * WPUQueueUserApc() upcall. Note that this function's signature is not
  74.  * identical to an application's completion routine.
  75.  */
  76.  
  77. typedef
  78. VOID
  79. (CALLBACK FAR * LPWSAUSERAPC)(
  80.     DWORD dwContext
  81.     );
  82.  
  83. /*
  84.  * Pointers to the individual entries in a service provider's proc table.
  85.  */
  86.  
  87. typedef
  88. SOCKET
  89. (WSPAPI * LPWSPACCEPT)(
  90.     SOCKET s,
  91.     struct sockaddr FAR * addr,
  92.     LPINT addrlen,
  93.     LPCONDITIONPROC lpfnCondition,
  94.     DWORD dwCallbackData,
  95.     LPINT lpErrno
  96.     );
  97.  
  98. typedef
  99. INT
  100. (WSPAPI * LPWSPADDRESSTOSTRING)(
  101.     LPSOCKADDR lpsaAddress,
  102.     DWORD dwAddressLength,
  103.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  104.     LPWSTR lpszAddressString,
  105.     LPDWORD lpdwAddressStringLength,
  106.     LPINT lpErrno
  107.     );
  108.  
  109. typedef
  110. int
  111. (WSPAPI * LPWSPASYNCSELECT)(
  112.     SOCKET s,
  113.     HWND hWnd,
  114.     unsigned int wMsg,
  115.     long lEvent,
  116.     LPINT lpErrno
  117.     );
  118.  
  119. typedef
  120. int
  121. (WSPAPI * LPWSPBIND)(
  122.     SOCKET s,
  123.     const struct sockaddr FAR * name,
  124.     int namelen,
  125.     LPINT lpErrno
  126.     );
  127.  
  128. typedef
  129. int
  130. (WSPAPI * LPWSPCANCELBLOCKINGCALL)(
  131.     LPINT lpErrno
  132.     );
  133.  
  134. typedef
  135. int
  136. (WSPAPI * LPWSPCLEANUP)(
  137.     LPINT lpErrno
  138.     );
  139.  
  140. typedef
  141. int
  142. (WSPAPI * LPWSPCLOSESOCKET)(
  143.     SOCKET s,
  144.     LPINT lpErrno
  145.     );
  146.  
  147. typedef
  148. int
  149. (WSPAPI * LPWSPCONNECT)(
  150.     SOCKET s,
  151.     const struct sockaddr FAR * name,
  152.     int namelen,
  153.     LPWSABUF lpCallerData,
  154.     LPWSABUF lpCalleeData,
  155.     LPQOS lpSQOS,
  156.     LPQOS lpGQOS,
  157.     LPINT lpErrno
  158.     );
  159.  
  160. typedef
  161. int
  162. (WSPAPI * LPWSPDUPLICATESOCKET)(
  163.     SOCKET s,
  164.     DWORD dwProcessId,
  165.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  166.     LPINT lpErrno
  167.     );
  168.  
  169. typedef
  170. int
  171. (WSPAPI * LPWSPENUMNETWORKEVENTS)(
  172.     SOCKET s,
  173.     WSAEVENT hEventObject,
  174.     LPWSANETWORKEVENTS lpNetworkEvents,
  175.     LPINT lpErrno
  176.     );
  177.  
  178. typedef
  179. int
  180. (WSPAPI * LPWSPEVENTSELECT)(
  181.     SOCKET s,
  182.     WSAEVENT hEventObject,
  183.     long lNetworkEvents,
  184.     LPINT lpErrno
  185.     );
  186.  
  187. typedef
  188. BOOL
  189. (WSPAPI * LPWSPGETOVERLAPPEDRESULT)(
  190.     SOCKET s,
  191.     LPWSAOVERLAPPED lpOverlapped,
  192.     LPDWORD lpcbTransfer,
  193.     BOOL fWait,
  194.     LPDWORD lpdwFlags,
  195.     LPINT lpErrno
  196.     );
  197.  
  198. typedef
  199. int
  200. (WSPAPI * LPWSPGETPEERNAME)(
  201.     SOCKET s,
  202.     struct sockaddr FAR * name,
  203.     LPINT namelen,
  204.     LPINT lpErrno
  205.     );
  206.  
  207. typedef
  208. int
  209. (WSPAPI * LPWSPGETSOCKNAME)(
  210.     SOCKET s,
  211.     struct sockaddr FAR * name,
  212.     LPINT namelen,
  213.     LPINT lpErrno
  214.     );
  215.  
  216. typedef
  217. int
  218. (WSPAPI * LPWSPGETSOCKOPT)(
  219.     SOCKET s,
  220.     int level,
  221.     int optname,
  222.     char FAR * optval,
  223.     LPINT optlen,
  224.     LPINT lpErrno
  225.     );
  226.  
  227. typedef
  228. BOOL
  229. (WSPAPI * LPWSPGETQOSBYNAME)(
  230.     SOCKET s,
  231.     LPWSABUF lpQOSName,
  232.     LPQOS lpQOS,
  233.     LPINT lpErrno
  234.     );
  235.  
  236. typedef
  237. int
  238. (WSPAPI * LPWSPIOCTL)(
  239.     SOCKET s,
  240.     DWORD dwIoControlCode,
  241.     LPVOID lpvInBuffer,
  242.     DWORD cbInBuffer,
  243.     LPVOID lpvOutBuffer,
  244.     DWORD cbOutBuffer,
  245.     LPDWORD lpcbBytesReturned,
  246.     LPWSAOVERLAPPED lpOverlapped,
  247.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  248.     LPWSATHREADID lpThreadId,
  249.     LPINT lpErrno
  250.     );
  251.  
  252. typedef
  253. SOCKET
  254. (WSPAPI * LPWSPJOINLEAF)(
  255.     SOCKET s,
  256.     const struct sockaddr FAR * name,
  257.     int namelen,
  258.     LPWSABUF lpCallerData,
  259.     LPWSABUF lpCalleeData,
  260.     LPQOS lpSQOS,
  261.     LPQOS lpGQOS,
  262.     DWORD dwFlags,
  263.     LPINT lpErrno
  264.     );
  265.  
  266. typedef
  267. int
  268. (WSPAPI * LPWSPLISTEN)(
  269.     SOCKET s,
  270.     int backlog,
  271.     LPINT lpErrno
  272.     );
  273.  
  274. typedef
  275. int
  276. (WSPAPI * LPWSPRECV)(
  277.     SOCKET s,
  278.     LPWSABUF lpBuffers,
  279.     DWORD dwBufferCount,
  280.     LPDWORD lpNumberOfBytesRecvd,
  281.     LPDWORD lpFlags,
  282.     LPWSAOVERLAPPED lpOverlapped,
  283.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  284.     LPWSATHREADID lpThreadId,
  285.     LPINT lpErrno
  286.     );
  287.  
  288. typedef
  289. int
  290. (WSPAPI * LPWSPRECVDISCONNECT)(
  291.     SOCKET s,
  292.     LPWSABUF lpInboundDisconnectData,
  293.     LPINT lpErrno
  294.     );
  295.  
  296. typedef
  297. int
  298. (WSPAPI * LPWSPRECVFROM)(
  299.     SOCKET s,
  300.     LPWSABUF lpBuffers,
  301.     DWORD dwBufferCount,
  302.     LPDWORD lpNumberOfBytesRecvd,
  303.     LPDWORD lpFlags,
  304.     struct sockaddr FAR * lpFrom,
  305.     LPINT lpFromlen,
  306.     LPWSAOVERLAPPED lpOverlapped,
  307.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  308.     LPWSATHREADID lpThreadId,
  309.     LPINT lpErrno
  310.     );
  311.  
  312. typedef
  313. int
  314. (WSPAPI * LPWSPSELECT)(
  315.     int nfds,
  316.     fd_set FAR * readfds,
  317.     fd_set FAR * writefds,
  318.     fd_set FAR * exceptfds,
  319.     const struct timeval FAR * timeout,
  320.     LPINT lpErrno
  321.     );
  322.  
  323. typedef
  324. int
  325. (WSPAPI * LPWSPSEND)(
  326.     SOCKET s,
  327.     LPWSABUF lpBuffers,
  328.     DWORD dwBufferCount,
  329.     LPDWORD lpNumberOfBytesSent,
  330.     DWORD dwFlags,
  331.     LPWSAOVERLAPPED lpOverlapped,
  332.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  333.     LPWSATHREADID lpThreadId,
  334.     LPINT lpErrno
  335.     );
  336.  
  337. typedef
  338. int
  339. (WSPAPI * LPWSPSENDDISCONNECT)(
  340.     SOCKET s,
  341.     LPWSABUF lpOutboundDisconnectData,
  342.     LPINT lpErrno
  343.     );
  344.  
  345. typedef
  346. int
  347. (WSPAPI * LPWSPSENDTO)(
  348.     SOCKET s,
  349.     LPWSABUF lpBuffers,
  350.     DWORD dwBufferCount,
  351.     LPDWORD lpNumberOfBytesSent,
  352.     DWORD dwFlags,
  353.     const struct sockaddr FAR * lpTo,
  354.     int iTolen,
  355.     LPWSAOVERLAPPED lpOverlapped,
  356.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  357.     LPWSATHREADID lpThreadId,
  358.     LPINT lpErrno
  359.     );
  360.  
  361. typedef
  362. int
  363. (WSPAPI * LPWSPSETSOCKOPT)(
  364.     SOCKET s,
  365.     int level,
  366.     int optname,
  367.     const char FAR * optval,
  368.     int optlen,
  369.     LPINT lpErrno
  370.     );
  371.  
  372. typedef
  373. int
  374. (WSPAPI * LPWSPSHUTDOWN)(
  375.     SOCKET s,
  376.     int how,
  377.     LPINT lpErrno
  378.     );
  379.  
  380. typedef
  381. SOCKET
  382. (WSPAPI * LPWSPSOCKET)(
  383.     int af,
  384.     int type,
  385.     int protocol,
  386.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  387.     GROUP g,
  388.     DWORD dwFlags,
  389.     LPINT lpErrno
  390.     );
  391.  
  392. typedef
  393. INT
  394. (WSPAPI * LPWSPSTRINGTOADDRESS)(
  395.     LPWSTR AddressString,
  396.     INT AddressFamily,
  397.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  398.     LPSOCKADDR lpAddress,
  399.     LPINT lpAddressLength,
  400.     LPINT lpErrno
  401.     );
  402.  
  403. /*
  404.  * A service provider proc table. This structure is returned by value
  405.  * from the service provider's WSPStartup() entrypoint.
  406.  */
  407.  
  408. typedef struct _WSPPROC_TABLE {
  409.  
  410.     LPWSPACCEPT              lpWSPAccept;
  411.     LPWSPADDRESSTOSTRING     lpWSPAddressToString;
  412.     LPWSPASYNCSELECT         lpWSPAsyncSelect;
  413.     LPWSPBIND                lpWSPBind;
  414.     LPWSPCANCELBLOCKINGCALL  lpWSPCancelBlockingCall;
  415.     LPWSPCLEANUP             lpWSPCleanup;
  416.     LPWSPCLOSESOCKET         lpWSPCloseSocket;
  417.     LPWSPCONNECT             lpWSPConnect;
  418.     LPWSPDUPLICATESOCKET     lpWSPDuplicateSocke